package easy;

/**
 * Created by daodao on 2017/11/30.
 * Problem 26
 * Description: Given a sorted array, remove the duplicates in-place such that each element appear only once
 * and return the new length. Do not allocate extra space for another array, you must do this by modifying
 * the input array in-place with O(1) extra memory.
 *
 * Example: Given nums = [1,1,2],
 * Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
 * It doesn't matter what you leave beyond the new length.
 */
public class RemoveDuplicatesFromSortedArray {
    public static int removeDuplicates(int[] nums) {
        int newLen = nums.length;
        int step = 0;
        for (int i = 0; i < newLen - 1; i++) {
            int j = i + 1;
            while (j < newLen && nums[i] == nums[j]) {
                step++;
                j++;
            }
            for (int k = i + 1; k < newLen - step; k++) {
                    nums[k] = nums[k + step];
            }
            newLen -= step;
            step = 0;
        }
        return newLen;
    }
}
